package cn.uexpo.lhz.controller.admin;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;

import cn.uexpo.lhz.biz.DictionaryBiz;
import cn.uexpo.lhz.biz.DictionaryItemBiz;
import cn.uexpo.lhz.common.oldBase.BaseController;
import cn.uexpo.lhz.common.oldUtils.PageRequest;
import cn.uexpo.lhz.common.oldUtils.PageResult;
import cn.uexpo.lhz.common.oldUtils.StringDate;
import cn.uexpo.lhz.core.http.HttpResult;
import cn.uexpo.lhz.domain.Dictionary;
import cn.uexpo.lhz.domain.DictionaryItem;
import cn.uexpo.lhz.domain.DictionaryItemExample;

/**
 *
 * @ClassName:  ItemController
 * @Description:TODO(字典条目)
 * @author: 李冬建
 * @date:   2020年6月4日 上午10:29:02
 * @Copyright:  1.0.0
 */
@RestController
@RequestMapping("/admin/item")
public class ItemController extends BaseController<DictionaryItem>{


    @Autowired
    protected DictionaryBiz dictionaryBiz;
    @Autowired
    protected DictionaryItemBiz dictionaryItemBiz;


    /**
	 * 字典列表
	 * @return
	 * @throws Exception
	 */

//	@PostMapping(value="/findPage")
//	public HttpResult findPage(@RequestBody PageRequest pageRequest) {
//		PageResult result=findPage1(pageRequest);
//		return HttpResult.ok(result);
//	}


//	private PageResult findPage1(@RequestBody PageRequest pageRequest) {
//
//
//		Object dictType = pageRequest.getParamValue("dictType");//所属类型
//		Object dictName = pageRequest.getParamValue("dictName");//字典名称
//
//
//		Object dictcode = pageRequest.getParamValue("dictcode");//字典编码
//		Object itemcode = pageRequest.getParamValue("itemcode");//条目编码
//		Object name = pageRequest.getParamValue("name");//条目名称
//		Object value = pageRequest.getParamValue("value");//条目值
//
//		DictionaryItemExample example=new DictionaryItemExample();
//		String orderBy=" ITEM.extdate1 ";//按照序号降序
//	    String sort=" desc ";//默认按照时间降序
//		example.setOrderByClause(orderBy+sort);
//
//		DictionaryItemExample.Criteria criteria=example.createCriteria();
//		if (StringUtils.isNotBlank((String)dictType)) {
//			criteria.andDictType((String)dictType);
////			log.info("------------dictType-----------------------------"+dictType);
//		}
//		if (StringUtils.isNotBlank((String)dictName)) {
//			criteria.andDictCodeEqualTo((String)dictName);
////			log.info("------------andDictCodeEqualTo-----------------------------"+dictType);
//		}
//
//
//		if (StringUtils.isNotBlank((String)dictcode)) {
//			criteria.andDictcodeLike("%"+(String)dictcode+"%");
//		}
//		if (StringUtils.isNotBlank((String)itemcode)) {
//			criteria.andItemcodeLike("%"+(String)itemcode+"%");
//		}
//		if (StringUtils.isNotBlank((String)name)) {
//			criteria.andNameLike("%"+(String)name+"%");
//		}
//		if (StringUtils.isNotBlank((String)value)) {
//			criteria.andValueLike("%"+(String)value+"%");
//		}
//
//
//		PageResult pageResult=dictionaryItemBiz.findPage(pageRequest, example);
//		return pageResult;
//	}



	/**
	/**
     * 添加/修改 条目
     * @param record
     * @return
	 * @throws Exception
     */
	@PostMapping(value="/save")
    public HttpResult save(@RequestBody DictionaryItem record) throws Exception {
//    	log.info("------------itemAddOrEdit-------------------");

    	String msg="";
    	long result=0;
    	if (record.getId()==null) {
    		String dictcode=record.getDictcode();
    		String itemcode=record.getItemcode();
    		String existFlag=dictionaryBiz.selectValueBy(dictcode, itemcode);
    		if (StringUtils.isNotBlank(existFlag)) {
    			msg="该条目已存在，添加失败！";
			}else {
				record.setExtdate1(StringDate.getNow());
	    	    result=dictionaryItemBiz.insert(record);
	    	    if(result==1) {
	        		msg="添加条目成功！";
	        	}else {
	        		msg="添加条目失败！";
	    		}
			}
		}else {
//			result=dictionaryItemBiz.update(record);
			record.setExtdate1(StringDate.getNow());//插入当前记录时间
			result=dictionaryItemBiz.updateByPrimaryKeySelective(record);
			if(result==1) {
	    		msg="修改条目成功！";
	    	}else {
	    		msg="修改条目失败！";
			}
		}
    	if(result==1) {
    		return HttpResult.ok(msg);
    	}else {
    		return HttpResult.error(msg);
		}
    }

    /**
     * 删除条目
     * @param
     * @return
     * @throws Exception
     */
    @RequestMapping(value="/delete",method=RequestMethod.POST)
    public HttpResult itemDelete(@RequestBody List<DictionaryItem> records) throws Exception {

		if (records!=null&&records.size()>0) {
			for (DictionaryItem record : records) {
				long result=dictionaryItemBiz.deleteByPrimaryKey(record.getId());
			}
		}
		return HttpResult.ok(1);
    }

    /**
     * 字典类型（筛选条件1：下拉列表）
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/initDictType", method = RequestMethod.POST)
    public HttpResult dictTypes() throws Exception {
    	List<JSONObject> list = new ArrayList<JSONObject>();
		List<String> items = dictionaryBiz.selectDistinctTypes();
		JSONObject objInit = new JSONObject();
		objInit.put("id", "");
		objInit.put("text", "请选择");
		list.add(objInit);
		if(items!=null&&items.size()>0) {
			for (String item : items) {
				JSONObject obj = new JSONObject();
				obj.put("id", item);
				obj.put("text", item);
				list.add(obj);
			}

		}

		return HttpResult.ok(list);
    }

    /**
     * 根据字典类型查看字典（筛选条件2 联动效果）
     * @return
     * @throws Exception
     */
    @PostMapping(value="/selectDictnamesByType")
    public HttpResult selectDictnamesByType(@RequestBody PageRequest pageRequest) throws Exception {
    	Object dictType = pageRequest.getParamValue("dictType");//所属类型
    	List<JSONObject> list = new ArrayList<JSONObject>();
		List<Dictionary> items = dictionaryBiz.selectByType((String)dictType);
		JSONObject objInit = new JSONObject();
		objInit.put("id", "");
		objInit.put("text", "请选择");
		list.add(objInit);
		if(items!=null&&items.size()>0) {
			for (Dictionary item : items) {
				JSONObject obj = new JSONObject();
				obj.put("id", item.getDictcode());
				obj.put("text", item.getName());
				list.add(obj);
			}

		}
		return HttpResult.ok(list);
    }


}
